﻿using Little.Soldier.SWIFT;
using Little.Soldier.SWIFT.Definition;
using System.ComponentModel;

namespace Little.Soldier.SWIFT.Messages.Category0
{
  public class MT044 : SwiftMessage
  {
    private static SwiftMessageDefinition MessageDefinition;
    private static SwiftTagDefinition U0002;
    private static SwiftTagSubItemDefinition U0003;
    private static SwiftTagDefinition U0004;
    private static SwiftTagSubItemDefinition U0005;
    private static SwiftTagDefinition U0006;
    private static SwiftTagSubItemDefinition U0007;

    [Description("Holiday Suppression Option")]
    public Tag302 HolidaySuppression_302
    {
      get
      {
        return new Tag302((SwiftElement) this, 0, (SwiftDefinitionElement) MT044.U0002);
      }
    }

    [Description("Holiday Suppression Option")]
    public Tag302 Tag302_HolidaySuppression
    {
      get
      {
        return this.HolidaySuppression_302;
      }
    }

    [Description("Generation Option")]
    public Tag341 GenerationTimeOptions_341
    {
      get
      {
        return new Tag341((SwiftElement) this, 0, (SwiftDefinitionElement) MT044.U0004);
      }
    }

    [Description("Generation Option")]
    public Tag341 Tag341_GenerationTimeOptions
    {
      get
      {
        return this.GenerationTimeOptions_341;
      }
    }

    [Description("Reporting Options")]
    public Tag301 ReportingOptions_301
    {
      get
      {
        return new Tag301((SwiftElement) this, 0, (SwiftDefinitionElement) MT044.U0006);
      }
    }

    [Description("Reporting Options")]
    public Tag301 Tag301_ReportingOptions
    {
      get
      {
        return this.ReportingOptions_301;
      }
    }

    public MT044()
      : base(true)
    {
    }

    public MT044(SwiftMessage message)
      : base(message)
    {
    }

    internal override SwiftMessageDefinition MsgDefinition()
    {
      return MT044.MessageDefinition;
    }

    protected override void InitSwiftMessageDefinition()
    {
      MT044.MessageDefinition = new SwiftMessageDefinition("MT044", "Undelivered Report Rules Redefinition");
      MT044.U0002 = new SwiftTagDefinition("HolidaySuppression_302", "Holiday Suppression Option");
      MT044.U0002.TagName = "{302:";
      MT044.U0003 = new SwiftTagSubItemDefinition("HolidaySuppression", "Holiday Suppression Option");
      MT044.U0002.Elements.Add((SwiftDefinitionElement) MT044.U0003);
      MT044.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT044.U0002);
      MT044.U0004 = new SwiftTagDefinition("GenerationTimeOptions_341", "Generation Option");
      MT044.U0004.TagName = "{341:";
      MT044.U0005 = new SwiftTagSubItemDefinition("GenerationTimeOptions", "Generation Option");
      MT044.U0004.Elements.Add((SwiftDefinitionElement) MT044.U0005);
      MT044.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT044.U0004);
      MT044.U0006 = new SwiftTagDefinition("ReportingOptions_301", "Reporting Options");
      MT044.U0006.TagName = "{301:";
      MT044.U0006.Mandatory = false;
      MT044.U0007 = new SwiftTagSubItemDefinition("ReportingOptions", "Reporting Options");
      MT044.U0006.Elements.Add((SwiftDefinitionElement) MT044.U0007);
      MT044.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT044.U0006);
    }
  }
}
